package com.mashuai.utils.toolkit.core.msHandlebean.annotation;

import com.mashuai.utils.config.constants.StaticConstant;
import com.mashuai.utils.toolkit.achieve.MsExegesis;
import org.springframework.stereotype.Component;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 保存时候，对字段值进行唯一性检验。
 * 比如A表存在code=编码这个值，那这个时候，新增一条数据时候，校验code=编码是否已经存在与数据库，存在不允许保存
 *
 * @author: mashuai
 * @ClassName: MsSaveCheck
 */
@MsExegesis("")
@Component
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface
MsSaveCheck {
    @MsExegesis("检验条件，当bizField无值，与全表进行检验，bizField有值，排除该条数据。可在yml文件配置：ms.hb.save-biz-field:id")
    String bizField() default StaticConstant.HANDLE_BEAN_BIZ_ID_FIELD;
    @MsExegesis("需要校验的表名,如果不填写指定表名，默认取实体类上的@TableName的表名")
    String checkTable() default "";
    @MsExegesis("删除标识,默认表逻辑删除标识字段为deflag=0，可在yml文件配置：ms.hb.del-sing:deflag=0")
    String delFlag() default StaticConstant.HANDLE_BEAN_DEF_DEL_FLAG;
    @MsExegesis("如果字段值重复，需要提示的信息")
    String errorMsg() default "";
}
